How I built this blog (Part 2)
Choosing a Blogging Platform¶
Since Python is the language I'm the most comfortable in, I want a blogging platform that is based on python in case I ever need to try customizing something. My first thought when looking for a blogging platform was to build out a blog using Django following one of the numerous tutorials for building a blog with Django, since I'm very interested in building out a Django site in the future. Django would offer the ability to offer a dynamic site with a live database and build dashboards or other interactive visualizations that could be dynamically updated over time. On the other hand, the benefits of a dynamic site are purchased with considerably increased complexity. Since I am much more interested in writing a blog than I am in writing blogging software and the benefits of a dynamic site do not appear immediately useful, I settled on the idea of doing something much simpler, which meant using a static site.
Having decided on using a static site, the choice of python static blog generator platforms gets basically comes down to Pelican vs Nikola (no, not that Nikola). Both platforms support rich sets of features including plugins, themes, and extensions. Both options have all the features we identified earlier in our requirements:
| Feature | Nikola | Pelican |
|---|---|---|
| Easy static sites? | Y | Y |
| Comments? | Y | Y |
| Custom themes? | Y | Y |
| LaTeX support? | Y | Y |
| Markdown? | Y | Y |
| Jupyter notebooks? | Y | Y |
| Publish with git? | Y | Y |
In point of fact, I've only discovered two small differences between the two packages.
First, Nikola offers a neat incremental build system that only rebuilds existing content if the source for that post has changed, whereas Pelican appears to rebuild every post every time. In theory the incremental builds could be a real time-saver if one had a large number of posts.
The second, and potentially more significant difference between the two platforms comes in the user base. As of the time of this writing, Pelican has 10k stars on github and Nikola has only 2k. To be sure, both projects have established user bases and have ongoing development and support, but I have a strong preference for the larger user base. A larger user base means more people out there writing plugins, documentation, and answering stack overflow questions, and that's what I want.
Update 12/20/2020
Although, I initially chose Pelican because of it's larger userbase, I ended up changing my mind because although Pelican does have plugins that support notebooks, Pelican itself does not do so out of the box.
Both plugins I tried (pelican-jupyter and ipython) do not appear to be actively maintained.
So, I ended up very quickly trapped in the realm of hunting through documentation and trying to resolve version conflicts.
That was the opposit
